<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" type="text/css" href="/var/www/html/style.css">
    <style>
        p {
            text-align: left;
        }
    </style>
</head>

<body>
    <h1>Net compression&GAN</h1>

    <p id="title"> 2021.8.23 家中</p>
    <hr>

    <p id="text">
        学到了8.23的早上3点多，这两天尝试了一下感觉异常的痛苦，主要是没有把SSD搞清楚，如果只是一个feature map生成一个张量图，算法中总共生成了几千个图，然后计算了和目标数的损失之后，然后呢？就利用这个来反向传播嘛？也太夸张了吧，该如何反向传播？是否应该进行非极大值抑制？于是选择了概率最大的进行非极大值抑制，然后进行反向传播，那么这个框框被选中的概率会越来越大，直至收敛。这样的反向传播，model应该会学到什么呢？加大了当前框所对应feature map的贡献与识别权重。？但是这个参数都是每个map自动生成的，定长定宽，反向传播了个啥？哦，model中好像是有预测的，是4个输出嘛。诶感觉怪怪的，可能是网络的源代码没有搞清楚，明天要再研究一下网络的源代码和反向传播的过程，可能会有突破。
    </p>
    <p id="text">
        这两天代码部分就在弄上面的事情吧，然后自己调整model，也算是能跑了，但是跑了之后自己看不懂，于是还想改回SSD的架构。。
    </p>
    <p id="text">
        然后还看了看论文，看了Bert论文，还看了一个Geoimage的一篇小文章，主要讲了地理图像的应用。又重新看了看SSD的论文，研究了一下。。（感觉自己看的挺多的啊，就这？）
    </p>
    <p id="text">
        看了吴恩达的三种优化算法（动量梯度下降，RMSprop，Adam算法），主要讲了如何优化梯度下降，在梯度比较平缓的方向加速下降，并且减慢梯度大的方向的下降。然后还有一点GNN的（不知道是什么时候看的，就了解了一下概念）
    </p>
    <p id="text">
        李宏毅这边看了网络压缩算法，一共有network pruning，knowledge Distillation （teacher net和student net ，还有助教，又感觉很夸张）Parameter Quantization（用kmeans或者参数二元化等方法对网络的权重所占空间进行压缩）还有Architecture Design，比如说深度全卷积网络啦。然后就有一个mobile net，难以相信，这种网络的性能居然会比传统网络的性能要好？这篇论文中讲了两个超参数：用于控制时间和空间。另外一种方法，就是在每一个layer后面都进行输出（比如分类训练等）但是这样整体的performance会下降。
    </p>
    <p id="text">
        还有一个神奇的方法，让我感觉真的很神奇。
    </p>
    <img src="label-refinery.png" alt="李宏毅课堂的一张截图，不重要">
    <p id="text">
        先train一个model，然后再train一个model学习前一个model，这样就可以降低过拟合，还能学习到lebel之间的关系，这叫Label Refinery（精细化），简直牛大了。
    </p>
    <p id="text">
        还有一个互相学习，train 两个net，然后求对目标的交叉熵和两个net之间的相对上，然后来反复更新。还可以Ensemble所有的student model。
    </p>
    <p id="text">
        还有一个，Fit net，student model逐层学习feature中间的特征，也是一个好方法，也可以对featrue进行数据的降维，这样也很好学哦。
    </p>
    <p id="text">关于distillation，其实teacher net 可以尝试用sample指甲你的关系做知识蒸馏，就是求不同特征之间的距离和角度，也就是计算出来一个相关性，把这个相关性的表算出来之后，student net 再去学这个teacher维护出来的表，这样可能也能更好的优化模型和特征。</p>
    <p id="text">关于prune，可以通过重要性排列对每个neural进行prune，其中就可以对每一个隐含层求和（L1-norm)来计算权重，然后小的就可以不要了。（这里还不是很清楚）</p>
    <p id="text">接下来是GAN，生成式对抗网络，一个是generator，一个是discriminator，算法如下：首先生成器生成一组图片，给判别器训练，让判别器训练到能完成全分开生成器的图片，然后生成器再进行训练，在固定判别器参数的情况下使其判别分数最小，再如此反复。</p>
    <p id="text">因为GAN的输入参数一般都是一组正态分布的随机数，理论上就是找到一个合理的映射将这组随机数映射到高维去（图片就是高维的），并且最小化PG（生成器生成的概率分布）和Pdata（数据集的概率分布），比如生成动漫头像，动漫头像自然是在一个概率分布里的。这样的话，距离就不是很好度量，于是就引出了wasserstein distance。</p>

</body>

</html>